package br.com.scpe.managedbean.negocio.ponto;

import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.scpe.ejb.entity.Funcionario;
import br.com.scpe.ejb.sessionBean.FuncionarioSessionBean;
import br.com.scpe.managedbean.BaseManagedBean;
import br.com.scpe.util.SCHSconstantes;

@ViewScoped
@ManagedBean
public class ListarPontoManagedBean extends BaseManagedBean{

	public ListarPontoManagedBean() {
		super();
	}

	private Funcionario funcionario;
	
	private List<Funcionario> listaFuncionarios;
	
	@EJB
	private FuncionarioSessionBean funcionarioSessionBean;
	
	private int tipoFiltro;
	
	private Long mes;
	private Long ano;

	@PostConstruct
	public void init() {
		Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
		funcionario = (Funcionario) requestMap.get("funcionario");
		tipoFiltro = (Integer) requestMap.get("tipoFiltro");
		mes = (Long) requestMap.get("mes");
		ano = (Long) requestMap.get("ano");
		listaFuncionarios = listarFuncionarios();
	}
	
	public String setRequestFuncionario() {
		Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
		requestMap.put("funcionario", funcionario);
		requestMap.put("ano", ano);
		requestMap.put("mes", mes);
		requestMap.put("tipoFiltro", tipoFiltro);
		
		return SCHSconstantes.PAGINA_LISTAR_PONTO;
	}
	
	public List<Funcionario> listarFuncionarios(){
			
		switch (tipoFiltro) {
		
			case SCHSconstantes.CONSULTA_POR_NOME:
				listaFuncionarios = funcionarioSessionBean.consultaPorNome(funcionario.getNome());
				break;
			case SCHSconstantes.CONSULTAR_POR_EMAIL:
				listaFuncionarios = funcionarioSessionBean.consultaPorEmailLista(funcionario.getEmail());
				break;
			case SCHSconstantes.CONSULTAR_POR_DEPARTAMENTO:
				listaFuncionarios = funcionarioSessionBean.consultaPorDepartamento(funcionario.getDepartamento());
				break;
			case SCHSconstantes.CONSULTAR_POR_TODOS:
				listaFuncionarios = funcionarioSessionBean.consultaTodosFuncionarios();
				break;
			
			default:
				addMessageError("Selecione um filtro !");
				break;
			}
			return listaFuncionarios;
		}
	
	public String voltarTelaConsultarUsuarioPonto() {
		return SCHSconstantes.PAGINA_CONSULTAR_PONTO;
	}
	
	/*===================== GETTERS AND SETTERS =====================*/
	
	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public List<Funcionario> getListaFuncionarios() {
		return listaFuncionarios;
	}

	public void setListaFuncionarios(List<Funcionario> listaFuncionarios) {
		this.listaFuncionarios = listaFuncionarios;
	}

	public int getTipoFiltro() {
		return tipoFiltro;
	}

	public void setTipoFiltro(int tipoFiltro) {
		this.tipoFiltro = tipoFiltro;
	}

	public Long getMes() {
		return mes;
	}

	public void setMes(Long mes) {
		this.mes = mes;
	}

	public Long getAno() {
		return ano;
	}

	public void setAno(Long ano) {
		this.ano = ano;
	}
}
